#ifndef DATOBSHARP_H_
#define DATOBSHARP_H_

#include "Dato.h"
#include "Clave.h"
#include "includes.h"

namespace Toolkit
{

class DatoBSharp: public Dato
{
public:
    DatoBSharp(const Clave &clave, const unsigned long int &posicion, const TipoSerializacion &tSerializacion);
    virtual ~DatoBSharp();

    virtual void serializar(stringstream&) const;
    virtual void hidratar(stringstream&);

    virtual Dato* clonar() const;

    Clave *getClave() const;

    unsigned long int getPosicion() const;

private:

    /**
     * La clave del dato que se indexa, que es a la vez clave de este dato.
     *
     */
    Clave* clave;

    /**
     * La posición representa la dirección del hijo izquierdo de la clave, si está
     * contenida en un nodo interno del árbol, o la dirección del registro en el archivo
     * de datos, si está en una hoja del árbol.
     */
    unsigned long int posicion;

    TipoSerializacion tSerializacion;

};

}

#endif /* DATOBSHARP_H_ */
